// 游戏参数==================================================begin
var Map = {};

// 游戏参数==================================================end

// 工具函数==================================================begin

//生成从min到max的随机数
function getRandomNumber(max, min) {
  let num = Math.floor(Math.random() * (max - min + 1)) + min;
  return num;
}

// 发射方法
function MeLaunch(X, Y, time) {
  console.log(X, Y, time)
  $("#ME").css({
    left: X + "px",
    top: Y + "px",
    transition: "all " + time + "s"
  });
}

// // 计算角度
// function getAngle(lng_a, lat_a, lng_b, lat_b) {
//   var a = ((90 - lat_b) * Math.PI) / 180;
//   var b = ((90 - lat_a) * Math.PI) / 180;
//   console.log(a, b);
//   var AOC_BOC = ((lng_b - lng_a) * Math.PI) / 180;
//   var cosc =
//     Math.cos(a) * Math.cos(b) + Math.sin(a) * Math.sin(b) * Math.cos(AOC_BOC);
//   var sinc = Math.sqrt(1 - cosc * cosc);
//   var sinA = (Math.sin(a) * Math.sin(AOC_BOC)) / sinc;
//   var A = (Math.asin(sinA) * 180) / Math.PI;
//   var res = 0;
//   if (lng_b > lng_a && lat_b > lat_a) res = A;
//   else if (lng_b > lng_a && lat_b < lat_a) res = 180 - A;
//   else if (lng_b < lng_a && lat_b < lat_a) res = 180 - A;
//   else if (lng_b < lng_a && lat_b > lat_a) res = 360 + A;
//   else if (lng_b > lng_a && lat_b == lat_a) res = 90;
//   else if (lng_b < lng_a && lat_b == lat_a) res = 270;
//   else if (lng_b == lng_a && lat_b > lat_a) res = 0;
//   else if (lng_b == lng_a && lat_b < lat_a) res = 180;
//   return res;
// }

// 工具函数==================================================end

//添加拖拽方法
function addDrag() {
  /*+++++ 拖曳效果 ++++++
   *原理：标记拖曳状态dragging ,坐标位置iX, iY
   * mousedown:fn(){dragging = true, 记录起始坐标位置，设置鼠标捕获}
   * mouseover:fn(){判断如果dragging = true, 则当前坐标位置 - 记录起始坐标位置，绝对定位的元素获得差值}
   * mouseup:fn(){dragging = false, 释放鼠标捕获，防止冒泡}
   */
  // 是否拉动
  var dragging = false;
  // 本体与鼠标的距离
  var iX, iY;
  // 本体坐标
  var cX, cY;
  // 拉动距离
  var distance;
  // 拉动坐标
  var sX, sY;
  // 影子坐标
  var oX, oY;
  $("#ME").mousedown(function (e) {
    console.log(111);
    // 缓存目标
    let that = this;
    // 开启拉动状态
    dragging = true;
    // clientX/clientY鼠标坐标
    // offsetLeft/offsetTop元素坐标
    iX = e.clientX - that.offsetLeft;
    iY = e.clientY - that.offsetTop;
    console.log(e.clientX, that.offsetLeft);
    cX = that.offsetLeft;
    cY = that.offsetTop;

    // 创建影子
    // console.log($(that).attr("class").split(" ")[0])
    let type = $("#ME")
      .attr("class")
      .split(" ")[0];
    let id = "shadow";
    let Airship = $(`<div class='${type}' id=${id}></div>`);
    $("#map").append(Airship);

    // 影子坐标
    document.onmousemove = function (e) {
      console.log(222);
      if (dragging) {
        var e = e || window.event;
        oX = e.clientX - iX;
        oY = e.clientY - iY;
        console.log(e.clientY, iY);
        // 拉动距离
        distance = Math.sqrt(Math.pow(oX - cX, 2) + Math.pow(oY - cY, 2));
        if (distance <= 50) {
          $("#shadow").css({
            opacity: 0.5,
            left: oX + "px",
            top: oY + "px"
          });
          sX = -(oX - cX) * 10 + cX;
          sY = -(oY - cY) * 10 + cY;
        }
      }
    };
  });

  // 松手执行
  $(document).mouseup(function (e) {
    console.log(333);
    // 关闭拉动状态
    dragging = false;
    // 删除影子
    $("#map")
      .children("#shadow")
      .remove();
    console.log(sX, sY);
    // =====================
    let leftNum = -(sX - 0);
    let rightNum = sX - 350;
    let topNum = -(sY - 0);
    let bottomNum = sY - 270;

    let leftTime = Math.abs(leftNum / sX) 
    let rightTime = Math.abs(rightNum / sX)  
    let topTime = Math.abs(topNum / sY)  
    let bottomTime = Math.abs(bottomNum / sY)  


    console.log(leftNum, rightNum, topNum, bottomNum);
    // ======================

    if (sX >= 0 && sY >= 0 && sX <= 350 && sY <= 270) {
      // 发射: sX：x轴/sY：y轴/1：时间
      // MeLaunch(sX, sY, 1);
      MeLaunch(sX, sY, 1);
    } else if (sX <= 0 && sY >= 0 && sY <= 270) {
      console.log("左");
      MeLaunch(0, sY, leftTime);

    } else if (sX >= 350 && sY >= 0 && sY <= 270) {
      console.log("右");
      MeLaunch(350, sY, rightTime);

    } else if (sY <= 0 && sX >= 0 && sX <= 350) {
      console.log("上");
      MeLaunch(sX, 0, topTime);

    } else if (sY >= 270 && sX >= 0 && sX <= 350) {
      console.log("下");
      MeLaunch(sX, 270, bottomTime);

    } else if (sX <= 0 && sY <= 0) {
      console.log("左上");
      if (leftNum >= topNum) {
        MeLaunch(0, leftTime * topNum, leftTime);
      } else {
        MeLaunch(topTime * leftNum, 0, topTime);
      }

    } else if (sX <= 0 && sY >= 270) {
      console.log("左下");
      if (leftNum >= bottomNum) {
        MeLaunch(0, leftTime * bottomNum, leftTime);
      } else {
        MeLaunch(bottomTime * leftNum, 0, bottomTime);
      }

    } else if (sX >= 350 && sY <= 0) {
      console.log("右上");
      if (rightNum >= topNum) {
        MeLaunch(0, rightTime * topNum, rightTime);
      } else {
        MeLaunch(topNum / sY * rightNum, 0, topNum / sY);
      }

    } else if (sX >= 350 && sY >= 270) {
      console.log("右下");
      if (rightNum >= bottomNum) {
        MeLaunch(0, rightTime * bottomNum, rightTime);
      } else {
        MeLaunch(bottomTime * rightNum, 0, bottomTime);
      }

    }
  });
}
// 工具函数==================================================end

// 创建本机
const CreateAirship = function (type) {
  let id = "ME";
  // + Date.parse(new Date());
  let Airship = $(`<div class='${type}' id=${id}></div>`);
  $("#map").append(Airship);
  let x = getRandomNumber(0, 350);
  let y = getRandomNumber(0, 270);
  // console.log($("#" + id));
  $("#" + id).css("top", y);
  $("#" + id).css("left", x);
};
// 创建地图
const CreateMap = function (width, height) {
  $("#map").css({
    width: width + "px",
    height: height + "px"
  });
};

// 游戏创建
const game = function () {
  // 设置地图
  CreateMap(400, 300);
  // 创建飞船
  CreateAirship("zwz");
  // CreateAirship("dfp");
  // 给飞船添加拖拽方法
  addDrag();
};
// 初始化游戏
game();
